home *** CD-ROM | disk | FTP | other *** search
/ Educational Software Cooperative 4 / Educational Software Cooperative 4.iso / mand56a / mandel.hlp < prev    next >
Text File  |  1996-05-01  |  33KB  |  836 lines

  1.                    Mandelbrot/Julia
  2.                      Set Generator
  3.             Operating and Reference Manual
  4.                       Version 5.6
  5.  
  6.                      Installation
  7.  
  8.     The Mandelbrot/Julia Set Generator program 
  9. requires an IBM compatible computer with at least 512K 
  10. of memory, a VGA display and a Microsoft compatible 
  11. mouse. The installation process is quite easy. (Users
  12. obtaining .ZIP files from the Internet or a BBS can
  13. skip this installation section.)
  14.  
  15.     First, make a backup copy of your Mandelbrot/Julia 
  16. Set Generator program disk. If necessary, consult your 
  17. PC-DOS/MS-DOS manual for a description of the Diskcopy 
  18. command. Save the original program disk in a safe 
  19. place and use the copy as the working program disk. 
  20.  
  21.     Second, while it is possible to use the 
  22. Mandelbrot/Julia Set Generator on a floppy disk 
  23. system, a hard disk system is a necessity if you wish 
  24. to store a number of image files. To install the 
  25. Mandelbrot/Julia Set Generator on a hard disk use the 
  26. following steps: 
  27.  
  28.     1. Insert the floppy disk in your computer in 
  29.        drive A. (or B if necessary) 
  30.     2. Type A: (or B:)
  31.     3. Type INSTALL A C
  32.  
  33.     Any hard drive letters can be used, for example 
  34. INSTALL B D will install the program from floppy drive 
  35. B to hard drive D. The installation will create a 
  36. directory called MAND5 on your hard drive and you will 
  37. need to enter a CD\MAND5 to change to the 
  38. Mandelbrot/Julia Set Generator directory before 
  39. running the program. Once installed just type MAN to 
  40. start the program. All the files for Mandelbrot/Julia 
  41. Set Generator need to be in the same directory for the 
  42. program to operate successfully. 
  43.  
  44.           Quick Start for Impatient New Users
  45.  
  46.     Type MAN to start the program. After the mouse 
  47. cursor appears click it on the Load Image button at 
  48. the left. When the window appears with the list of 
  49. image file names, simply clicking on one of them will 
  50. display the image using the current color mask. If the 
  51. image file contains a specific color mask filename it 
  52. will be automatically loaded prior to displaying the 
  53. image. Most commands can be interrupted by a simple 
  54. mouse click. 
  55.  
  56.     The zoom window feature is started by double 
  57. clicking on the displayed image. Once the zoom window 
  58. appears, with its crossed center lines, it can be 
  59. moved by holding down the left mouse button, while the 
  60. cursor is inside the zoom window, and positioning the 
  61. window. The zoom window size can be increased or 
  62. reduced by holding down the left mouse button and 
  63. moving the mouse cursor horizontally while it is 
  64. outside the zoom window. Once correctly positioned the 
  65. mouse cursor should be clicked on the right gray 
  66. panel, which will store the changed dimensions. The 
  67. zoom window can be abandoned by clicking the mouse 
  68. cursor on the left gray panel. Be careful not to drag 
  69. the mouse cursor onto the gray panels while resizing. 
  70. The Set Values button should be clicked on next, and 
  71. the image file name changed. If this is not done the 
  72. original image file will be erased. Clicking on the 
  73. Make Image button will start the generation of the new 
  74. zoomed image. 
  75.  
  76.         The Command Buttons and Their Function
  77.  
  78.     Set Values
  79.  
  80.     The Set Values command allows the user to set the 
  81. initial parameters that will be used by the
  82. Mandelbrot/Julia Set Generator to begin generating a 
  83. new image. These values are also available for 
  84. inspection when an image has been displayed. The 
  85. values and their range are: 
  86.  
  87.     Item                             Range
  88. -----------------------------------------------------
  89.     X center value                   -10 to 10
  90.     Y center value                   -10 to 10
  91.     Magnification                    >0
  92.     A value (if a Julia image)       -10 to 10
  93.     B value (if a Julia image)       -10 to 10
  94.     Dwell                            1 to 8191
  95.     Image width in pixels            10 to 4800
  96.     Image type [M J]                 M or J
  97.     Full/Partial image [F P]         F or P
  98.     Default color mask file          xxxxxxxx.MSK
  99.     Display type [0 1]               For future use
  100.     256 color palette number         For future use
  101.     Image file name                  xxxxxxxx.MAN 
  102.                                      or xxxxxxxx.MAR 
  103.  
  104.     To change a value simply click inside the 
  105. rectangle where the value is displayed and then key in 
  106. a new value or file name. File name extensions must be 
  107. .MSK for color masks, .MAN for regular images and .MAR 
  108. for those that are recursive. 
  109.  
  110.     The A and B values are only displayed with Julia 
  111. images. If the recursive image generator is used the 
  112. image width must be a member of the 2^n set, ie. 16, 
  113. 32, 64, 128 etc. The program maintains the 
  114. Full/Partial image status and these values cannot be 
  115. changed by the user. 
  116.  
  117.     Color Masks
  118.  
  119.     When the Color Masks command is chosen a popup 
  120. window presents the four options: 
  121.  
  122.     Create/Display color mask
  123.     Select color mask
  124.     Select palette 
  125.     QUIT 
  126.  
  127.     Clicking on the Create/Display color mask option 
  128. allows the user to create, edit and save color masks. 
  129.  
  130.     Clicking on the Color mask file name box allows 
  131. you to type in a file name. The file name must have 
  132. the extension .MSK or you will not be able to select 
  133. it later. Ranges of dwell values should be typed into 
  134. the squares on the left. Just click on the square, 
  135. type in a dwell value and <Enter>. The colors are 
  136. selected by clicking on the desired color of the color 
  137. wheel in the upper right and then clicking on the odd 
  138. and even boxes at the right. The selected color is 
  139. displayed between the circular menu and the color 
  140. wheel. If the first line of the color mask reads: 
  141.  
  142.     0         9       [blue box]   [white box]
  143.  
  144. then dwell values from 0 to 9 will be colored blue if 
  145. odd and white if even. If a solid color is desired the 
  146. color boxes should be filled with the same color. The 
  147. end of a color mask should be designated with a 
  148. negative value entered into the first dwell box.  The 
  149. default color mask on startup is M1.MSK and its values 
  150. are: 
  151.  
  152.     Dwell Range     Odd color     Even color
  153. -----------------------------------------------
  154.     0     9         [blue box]    [white box]
  155.     10    19        [red box]     [red box]
  156.     20    510       [yellow box]  [yellow box]
  157.     511   511       [black box]   [black box]
  158.     -1
  159.  
  160.     In the case of M1.MSK, any dwell values larger 
  161. than 511 will be colored black (color 0 in the default 
  162. palette). 
  163.  
  164.     The circular menu at upper left has four options. 
  165. Clicking on the up or down arrow jumps to the previous 
  166. or next 16 color mask entries. A total of 256 entries 
  167. can be placed in one color mask. The SAVE option 
  168. stores the color mask currently displayed under the 
  169. name specified in the Color mask file name box. The 
  170. new color mask becomes the currently selected color 
  171. mask. 
  172.  
  173.     Clicking on the Select color mask option presents 
  174. the user with a large window and the names of the 
  175. color masks that have been stored. Clicking on a color 
  176. mask name will select and load that color mask. It 
  177. then can be viewed by selecting the Create/Display 
  178. color mask option. 
  179.  
  180.     Clicking on the Select palette option opens a 
  181. window that displays the current VGA color palette of 
  182. 16 colors. Clicking on the Default box will load the 
  183. default VGA color palette. Clicking on the arrows will 
  184. select other prestored color palettes, up to number 
  185. 57. 
  186.  
  187.     The QUIT option returns the user to the main menu. 
  188.  
  189.     Make Image
  190.  
  191.     Selecting the Make Image command generates a 
  192. Mandelbrot or Julia image based upon the parameters 
  193. entered in the Set Values command. A warning is issued 
  194. before the generation begins to allow the user to 
  195. change the file name, as any existing file of this 
  196. name will be erased. 
  197.  
  198.     A very simple way to generate images is first to 
  199. use Load Image to display a previously generated 
  200. image. Double clicking on the image will produce a 
  201. zoom window overlaid on the display. Clicking and 
  202. holding down the left mouse button allows the zoom 
  203. window to be dragged about the image to an interesting 
  204. portion of the image. The zoom window can be resized 
  205. by dragging the mouse pointer to the left and right 
  206. outside the zoom window. Once the zoom window has been 
  207. positioned and sized, clicking on the gray panel at 
  208. right will automatically store the new zoomed values 
  209. into the Set Values area. Be careful not to drag the 
  210. mouse cursor onto the gray panels while resizing. The 
  211. user will probably wish to enter a new image file name 
  212. using the Set Values command (this will prevent the 
  213. original image file from being erased), and then 
  214. generate a new image of the area defined by the zoom 
  215. window with the Make Image command. While the zoom 
  216. window is present the procedure can be cancelled by 
  217. clicking on the right gray panel around the command 
  218. buttons. The zoom window will only work on images that 
  219. are 480 pixels wide, or less. 
  220.  
  221.     Load Image
  222.  
  223.     The Load Image command presents the user with a 
  224. list of image file names that have been produced with 
  225. the .MAN extension. Clicking on a file name will 
  226. display the image with the current color mask if the 
  227. selected image has no default color mask file name. A 
  228. brief double tone is sounded if there is no default 
  229. color mask file name. If a color mask name was 
  230. included when the image was generated, this color mask 
  231. will be loaded before the image is displayed. 
  232. Partially generated images will automatically continue 
  233. generation when displayed with this command. Once an 
  234. image is displayed double clicking on the image will 
  235. produce a zoom window as described under the Make 
  236. Image command. 
  237.  
  238.     Make R Image
  239.  
  240.     The Make R Image command functions similarly to 
  241. the Make Image command except a recursive procedure is 
  242. used in place of the normal line by line generation. 
  243. The image file should be given the .MAR extension so 
  244. that it will be properly handled when using the Load R 
  245. Image command. In some cases this recursive procedure 
  246. will generate images faster that the normal method. 
  247. Partially generated images cannot be displayed with 
  248. generation automatically continuing as is the case 
  249. with the normal Load Image command. Image files are 
  250. generally larger with the recursive procedure. 
  251.  
  252.     Load R Image
  253.  
  254.     The Load R Image command displays a recursive 
  255. image previously generated with a .MAR extension in 
  256. the file name. A list of such files is presented and 
  257. the selected image is clicked on. Partially generated 
  258. images will not be automatically continued as with the 
  259. Load Image command. 
  260.  
  261.     3-D Image
  262.  
  263.     The 3-D Image command displays an image generated 
  264. with the Make Image command in a pseudo 3-D style. The 
  265. display algorithm is a simple one, but very slow. VGA 
  266. displays have limitations when displaying 3-D 
  267. Mandelbrot images. Best results occur with color masks 
  268. that contain multiple colors and have the dwell ranges 
  269. broken into many small steps. Large values for the 
  270. maximum dwell may result in the top of the image being 
  271. lost. Partially generated images will not be 
  272. automatically continued as with the Load Image 
  273. command. 
  274.  
  275.     Plot Dwell
  276.  
  277.     The Plot Dwell command reads all the dwell values 
  278. of an image stored with the .MAN extension and sums 
  279. them. The sums are then plotted with the current color 
  280. mask used for each dwell value plotted. Only dwell 
  281. values of 2,400 or less will be plotted. These plots 
  282. give an indication of how many points in the image 
  283. have the various dwell values and can be useful in 
  284. constructing a color mask that will display the image 
  285. to best advantage. 
  286.  
  287.     Make PCX
  288.  
  289.     The Make PCX command allows the user to select an 
  290. image file stored with the .MAN extension and create a 
  291. PCX image file. A 16 color PCX file using the default 
  292. VGA color palette can be chosen or several 256 color 
  293. PCX formats are available. Click on one of the small 
  294. boxes to select what type of PCX file you desire. The 
  295. color sequence of each of the 256 color formats is 
  296. displayed. The first example has magenta blending into 
  297. red for dwell values from 0 to 64, from red to yellow 
  298. for dwells from 64 to 128, etc. The PCX image file 
  299. format allows users to import Mandelbrot and Julia 
  300. image files into other software such as desktop 
  301. publishing programs and paint programs. PCX files can 
  302. also be used for Windows wallpaper. 
  303.  
  304.     Print Image
  305.  
  306.     The Print Image command presents the user with 
  307. nine different printer types that are supported, or 
  308. the command can be quit. 
  309.  
  310.     Epson 9 pin
  311.     Epson 24 pin
  312.     IBM 9 pin
  313.     IBM 24 pin
  314.     LaserJet
  315.     DeskJet 500 B/W
  316.     Epson DM Color
  317.     DeskJet 500 C
  318.     PaintJet
  319.     QUIT
  320.  
  321.     The 9 pin printers will output at 120x144 dpi, the 
  322. 24 pin at 180x180 dpi, the Laserjet, Deskjet 500 B/W 
  323. and Color at 150x150 dpi and the Epson DM Color and 
  324. Paintjet at 90x90 dpi. Be patient, the print drivers 
  325. do take time in exchange for attractive output. Color 
  326. is the slowest. Black and white images will be 
  327. dithered. QUIT returns the user to the main menu. 
  328.  
  329.     The Print Image command is basically for quick 
  330. hardcopy. If you wish to print museum quality prints 
  331. try a DeskJet 500 series printer. Create your image 
  332. and then make a PCX file using one of the 256 color 
  333. formats. Next, load this PCX file into the Paintbrush 
  334. program that comes with Windows. This is usually found 
  335. in the Accessories window. Next print the image from 
  336. Paintbrush. You will need a 256 color display to do 
  337. this and the Windows print driver that came with the 
  338. DeskJet printer. Most IBM PC's and clones being sold 
  339. today come with a 256 color display. The DeskJet will 
  340. print your image with a superb color balance at just 
  341. under 100 dpi. Try an image width of about 750 pixels 
  342. to fill out the 8-1/2 inch page. I've used this method 
  343. with a Hewlett-Packard DesignJet 650C and 36 inch wide 
  344. paper with images 3300 pixels wide to produce colored 
  345. output that is truly magnificent. If your printer is 
  346. not supported this method can also be used to print 
  347. your images. The only thing you will need is the 
  348. Windows print driver that came with your printer.
  349.  
  350.     Remember, images my be created which are much 
  351. wider than your screen. The upper left corner of your 
  352. image will be the only area visible. To see the entire 
  353. image, create a 256 color PCX file and use any paint 
  354. program that can read 256 color images. These can be 
  355. very attractive. 
  356.  
  357.     Help File
  358.   
  359.     The Help File command displays the file you are 
  360. currently reading. Clicking on the arrows to the right 
  361. displays the next or previous page. 
  362.  
  363.     Quit MAND56
  364.  
  365.     The Quit MAND56 command returns the user to the 
  366. DOS prompt. 
  367.  
  368.                  Image File Structure
  369.  
  370.     Each image file created by the Mandelbrot/Julia 
  371. Set Generator begins with a 150 byte header. 
  372.  
  373. Byte  Item       Size           Description
  374. ------------------------------------------------------
  375. 0     x           8 byte double  x center point
  376. 8     y           8 byte double  y center point
  377. 16    mag         8 byte double  magnification
  378. 24    a           8 byte double  a for Julia sets
  379. 32    b           8 byte double  b for Julia sets
  380. 40    maxdwell    unsigned int   maximum dwell
  381. 42    width       unsigned int   image width in pixels
  382. 44    mj[2]       char           M/J, image type
  383. 46    partial[2]  char           F/P, full/partial
  384. 48    mask[32]    char           color mask file name
  385. 80    display     integer        display (not used)
  386. 82    pal         integer        palette (not used)
  387. 84    name[50]    char           signature
  388. 134   fill[16]    char           filler
  389.  
  390.     All char strings are terminated with a hexadecimal 
  391. 00 byte. 
  392.  
  393.     The dwell data follows the header. It should be 
  394. noted that this is not a true image file, rather the 
  395. dwell values themselves are stored. This allows users 
  396. to color the image with a large variety of color 
  397. masks. Storing an image file might be simpler but for 
  398. every different color mask a new image file would have 
  399. to be created. 
  400.  
  401.     The dwell data is stored as a series of two byte 
  402. unsigned integers. Each unsigned integer contains the 
  403. dwell value and a run length corresponding to a string 
  404. of identical dwell values. The number of bits required 
  405. to hold the maximum dwell is first obtained. If the 
  406. maximum dwell is 511, then 9 bits are required, 1023 
  407. would require 10 bits, etc. Using 1023 for the maximum 
  408. dwell as an example, the right most 10 bits of the 16 
  409. bit integer represents the dwell value and the 6 left 
  410. most bits contain the run length. As a run length of 
  411. zero is not very useful, this value is always 
  412. incremented by one such that a run length of zero 
  413. equals 1, 1 is 2, etc. Given a maximum dwell of 1023 
  414. the following 16 bit unsigned integer represents a 
  415. dwell of 1000 and a run length of 32. 
  416.  
  417.                    011111 1111101000
  418.                        7FE8 hex
  419.  
  420.     When an image is being displayed and the unsigned 
  421. integer above is read, a line of 32 pixels will be 
  422. drawn using the appropriate color from the active 
  423. color mask for dwell value 1000. 
  424.  
  425.     Each line of a display is encoded with no 
  426. wraparound. This means that each line will end with 
  427. the display of an encoded unsigned integer and no 
  428. extra pixels of the same dwell will be added for the 
  429. beginning of the next line even if there is room in 
  430. the run length. 
  431.  
  432.     It should be noted that the maximum run length 
  433. that can be stored varies with the maximum dwell 
  434. chosen. Files with a maximum dwell of 1023 will have a 
  435. maximum run length of 64, those with maximum dwells of 
  436. 8191 will only store 16. This does not limit a run 
  437. length because if it exceeds the space available in a 
  438. single unsigned integer it simply creates additional 
  439. ones until the run of dwells has been stored. For this 
  440. reason images with high maximum dwell values are often 
  441. large in size. This method of file compression strikes 
  442. a good balance between file size and speed when 
  443. displaying an image. 
  444.  
  445.          The Mathematics of the Mandelbrot Set
  446.  
  447.     The Mandelbrot set is computed by operating on a 
  448. fairly simple equation that contains complex numbers 
  449. of the form 
  450.  
  451.               x + yi where  i = sqrt(-1)
  452.  
  453. The Mandelbrot equation is
  454.  
  455.                      z <- z^2 + c
  456.  
  457. where
  458.  
  459.                z = x + yi and c = a + bi
  460.  
  461. substituting these values into z^2 + c we have
  462.  
  463.                   (x + yi)^2 + a + bi
  464.  
  465.                x^2 + 2xyi - y^2 + a + bi
  466.  
  467. separating the real and imaginary parts of z gives
  468.  
  469.                   x <- x^2 - y^2 + a
  470.  
  471.                      y <- 2xy + b
  472.  
  473.     To determine whether a point (a,b) in the complex 
  474. plane is a member of the Mandelbrot set, the real and 
  475. imaginary parts of the equation are iterated. The x 
  476. and y values are first initialized to zero. The 
  477. constants a and b, the point in the plane, are then 
  478. substituted into the equations giving 
  479.  
  480.                    x <- a and y <- b
  481.  
  482. for the first iteration.
  483.  
  484.     The two new values for x and y, along with the 
  485. constants a and b, are now substituted into the 
  486. equations again. This procedure (iteration) continues 
  487. until the absolute value of x + yi > 2, ie. sqrt(x^2 + 
  488. ^y2) > 2. For those cases where this value never 
  489. exceeds 2, the maximum number of iterations is preset. 
  490. A value of about 500 is usually adequate, although 
  491. this value is raised to several thousand when smaller 
  492. details at high magnification are examined. The number 
  493. of times the equations are iterated before the value 
  494. of sqrt(x^2 + y^2) > 2 is called the dwell. Those 
  495. initial points (a,b) where the dwell is infinite, or 
  496. for more practical purposes attains the preset 
  497. maximum, are members of the Mandelbrot set. Another 
  498. way to describe this is to say that for points within 
  499. the Mandelbrot set, the sequence of points produced by 
  500. this iteration procedure is bounded inside a circle of 
  501. radius 2, where points outside the set are unbounded 
  502. and continue to grow and escape the circle. 
  503.  
  504.     The Mandelbrot set exists entirely within the area 
  505. defined by 
  506.  
  507.             -2 <= a <= 2  and  -2 <= b <= 2
  508.  
  509. in the complex plane. A Mandelbrot image is produced 
  510. by taking this area of the complex plane and dividing 
  511. it into a array of 1200 x 1200 points. Each one of 
  512. these points becomes the constant (a,b). The iteration 
  513. procedure previously described is used on each of the 
  514. 1.44 million points, coloring each point in the 
  515. Mandelbrot set black and all others white. The 
  516. algorithm is: 
  517.  
  518.     maxcount <- 1000
  519.     for b <- 2 to -2 stepdown 1/300
  520.     for a <- -2 to 2 step 1/300
  521.       x <- 0
  522.       y <- 0
  523.       count <- 0
  524.       while sqrt(x^2 + y^2) < 2 and count < maxcount
  525.         x <- x^2 - y^2 + a
  526.         y <- 2*x*y + b
  527.         count <- count + 1
  528.       end while
  529.       if count = maxcount plot(a,b,BLACK)
  530.         else plot(a,b,WHITE)
  531.     end for a
  532.     end for b
  533.  
  534.     While the algorithm is not that complex, the 
  535. amount of computation is enormous. Depending on 
  536. programming language and style, the inner loop has at 
  537. least four multiplications and a square root. For a 
  538. point in the Mandelbrot set this loop is executed 1000 
  539. times and there are over a million points to check! It 
  540. is not surprising that the Mandelbrot set was not 
  541. discovered until the age of computers. 
  542.  
  543.     In the Mandelbrot/Julia Set Generator program some 
  544. additional refinements are made to standardize the 
  545. initial parameters used to generate a specific image. 
  546. Instead of defining the range of (a,b) values used for 
  547. an area, a center point and a magnification are 
  548. specified. The center point is simply a chosen (a,b) 
  549. value. The length of a side which encloses the area of 
  550. interest is defined as 
  551.  
  552.                 side = 2/magnification
  553.  
  554. The following values can now be defined
  555.  
  556.              a_minimum = a_center - side/2
  557.  
  558.              b_maximum = b_center + side/2
  559.  
  560.                    gap = side/width
  561.  
  562. where width is defined as the number of points that 
  563. make up a side (or on a computer screen the number of 
  564. pixels), and the gap being the distance between each 
  565. point. 
  566.  
  567.     The Mandelbrot set is an interesting image, a sort 
  568. of cardioid with a spiked head attached at the left. 
  569. The boundary of the set sprouts self similar buds of 
  570. different sizes. Vastly more interesting images are 
  571. forthcoming when we examine the boundary of the 
  572. Mandelbrot set under higher magnification. To obtain 
  573. higher magnifications we simply divide a smaller area 
  574. into our array of points. For example, the area 
  575. defined by the center point (-0.77,0.17) and 
  576. magnification 20 is located in the upper valley 
  577. between the head and the cardioid shaped body. 
  578.  
  579.     If we continue with these magnifications, very 
  580. different and interesting images can be produced by 
  581. coloring the dwell values in specific ways. Along with 
  582. coloring points in the Mandelbrot set black, we can 
  583. assign different colors to other points based upon 
  584. their dwell value. For example, we might assign yellow 
  585. to dwell values in the range 400 to 499, red to 300 to 
  586. 399, etc. When we do this a great deal more detail 
  587. begins to appear in the boundary regions. This region 
  588. of interest exists only in a narrow band just outside 
  589. the Mandelbrot set. The skill one uses in choosing the 
  590. various colors for differing dwell values is very 
  591. important when attempting to produce an attractive 
  592. image. 
  593.  
  594.     The Mandelbrot/Julia Set Generator uses a file 
  595. called a color mask to store the colors used in 
  596. painting the various dwell values in an image. This 
  597. technique allows many different coloring schemes for a 
  598. single image. Consider the following color mask: 
  599.  
  600.     Dwell Range    Odd Color   Even Color
  601. ----------------------------------------------
  602.     0     9        blue        white
  603.     10    19       red         red
  604.     20    510      yellow      yellow
  605.     511   511      black       black
  606.     -1
  607.  
  608.     Dwell values from 0 to 9 will be colored blue if 
  609. they are odd numbers and white if they are even. 
  610. Values from 10 to 19 will be colored red, 20 to 510 
  611. yellow and 511 will be colored black. Choosing the 
  612. maximum dwell value to be in the set 2n - 1 maximizes 
  613. the file compression method the Mandelbrot/Julia Set 
  614. Generator program uses. 
  615.  
  616.     Generating Julia set images is a similar process. 
  617. The point (a,b) is chosen from one of the interesting 
  618. boundary areas of the Mandelbrot set. This value is 
  619. held constant and the (x,y) value is initialized to 
  620. the various points in the complex plane defined by 
  621.  
  622.             -2 <= x <= 2  and  -2 <= y <= 2
  623.  
  624.     This would be a magnification of 0.5, actually the 
  625. Julia image can often be enlarged slightly to fill the 
  626. screen and magnifications from 0.6 to 0.9 are often 
  627. used. 
  628.  
  629.     The algorithm for generating a Julia set is
  630.  
  631.     maxcount <- 1000
  632.     a <- constant
  633.     b <- constant
  634.     for y <- 2 to -2 stepdown 1/300
  635.     for x <- -2 to 2 step 1/300
  636.       count <- 00
  637.       while sqrt(x^2 + y^2) < 2 and count < maxcount
  638.         x <- x^2 - y^2 + a
  639.         y <- 2*x*y + b
  640.         count <- count + 1
  641.       end while
  642.       if count = maxcount plot(a,b,BLACK)
  643.           else plot(a,b,WHITE)
  644.     end for x
  645.     end for y
  646.  
  647.                   Selected References
  648.  
  649. Barnsley, Michael, Fractals Everywhere. San Diego, CA: 
  650.     Academic Press, 1988. 
  651.  
  652. Briggs, John and Peat, F. David Turbulent Mirror. New 
  653.     York: Harper & Row, 1989. 
  654.  
  655. Devaney, Robert L.Choas, Fractals, and Dynamics. Menlo 
  656.     Park, CA:Addison-Wesley, 1990. 
  657.  
  658. Devaney, Robert L. and Keen, Linda, Editors. Chaos and 
  659.     Fractals, The Mathematics Behind the Computer 
  660.     Graphics: Proceedings of Symposia in Applied 
  661.     Mathematics.Providence, RI: American Mathematical 
  662.     Society, 1989. 
  663.  
  664. Gleick, James Chaos, Making a New Science. New York: 
  665.     Viking Penguin, Inc., 1987. 
  666.  
  667. Mandelbrot, Benoit B. The Fractal Geometry of Nature. 
  668.     New York: W. H. Freeman and Co., 1983. 
  669.  
  670. Peitgen, Heinz-Otto and Richter, Peter H. The Beauty 
  671.     of Fractals, Images of Complex Dynamical Systems. 
  672.     Berlin: Springer-Verlag, 1986. 
  673.  
  674. Peitgen, Heinz-Otto and Saupe, Dietmar, Editors. The 
  675.     Science of Fractal Images. New York: Springer-
  676.     Verlag, 1988. 
  677.  
  678. Pietgen, Heinz-Otto, Jurgens, Hartmut and Saupe, 
  679.     Dietmar Fractals for the Classroom, (Volumes I & 
  680.     II), New York: Springer-Verlag, 1992. (There is a 
  681.     single volume work entitled Chaos and Fractals, 
  682.     New Frontiers of Science, which is essentially the 
  683.     same work as the two volume set above.) 
  684.  
  685. Pickover, Clifford A. Computers Pattern Chaos and 
  686.     Beauty: Graphics from an Unseen World.New York: 
  687.     St. Martin's Press, 1990. 
  688.  
  689. Pickover, Clifford A. Computers and the Imagination: 
  690.     Visual Adventures Beyond the Edge. New York: St. 
  691.     Martin's Press, 1991. 
  692.  
  693. Pickover, Clifford A. Mazes for the Mind. New York: 
  694.     St. Martins Press, 1992. 
  695.  
  696. Schroeder, Manfred Fractals, Chaos, Power Laws, 
  697.     Minutes from an Infinite Paradise.New York: W.H. 
  698.     Freeman and Co., 1991. 
  699.  
  700. Stevens, Roger T. Fractal Programing in C. Redwood 
  701.     City, CA: M&T Publishing, Inc., 1989. 
  702.  
  703. Stevens, Roger T. Advanced Fractal Programing in C. 
  704.     Redwood City, CA: M&T Publishing, Inc., 1990. 
  705.  
  706. Stewart, Ian Does God Play Dice? The Mathematics of 
  707.     Chaos. Oxford: Basil Blackwell, 1989. 
  708.  
  709. Stewart, Ian and Golubitsky, Martin Fearful Symmetry, 
  710.     Is God a Geometer? Oxford: Blackwell, 1992. 
  711.  
  712.                      Registration
  713.  
  714.     You may freely copy and distribute this shareware 
  715. Version 5.6 of the Mandelbrot/Julia Set Generator. 
  716. Shareware users who find the Mandelbrot/Julia Set 
  717. Generator useful should support the author and 
  718. register their copy. The form found below should be 
  719. used for registration. Registered users will receive a 
  720. copy the lastest version of the Mandelbrot/Julia Set 
  721. Generator with additional images and a printed manual. 
  722. Registered users will also receive support, by letter 
  723. mail, e-mail or phone, for six months from the date of 
  724. registration. 
  725.  
  726.     The Mandelbrot/Julia Set Generator is a "shareware 
  727. program" and is provided at no charge to the user for 
  728. evaluation. Vendors who distribute shareware programs 
  729. may charge a small fee for an evaluation copy. Feel 
  730. free to share this program with your friends, but 
  731. please do not give it away altered or as part of 
  732. another system. The essence of "user-supported" 
  733. software is to provide personal computer users with 
  734. quality software without high prices, and yet to 
  735. provide incentive for programmers to continue to 
  736. develop new products.  If you find this program useful 
  737. and find that you are using the Mandelbrot/Julia Set 
  738. Generator and continue to use the Mandelbrot/Julia Set 
  739. Generator after a reasonable trial period, you must 
  740. make a registration payment of $25. plus $2. shipping 
  741. to Theron Wierenga. The registration fee will license 
  742. one copy for use on any one computer at any one time. 
  743. You must treat this registered software just like a 
  744. book. An example is that this registered software may 
  745. be used by any number of people and may be freely 
  746. moved from one computer location to another, so long 
  747. as there is no possibility of it being used at one 
  748. location while it's being used at another. Just as a 
  749. book cannot be read by two different persons at the 
  750. same time. 
  751.  
  752.     The registration fee is $25. ($35. outside the 
  753. United States.) Please include $2.00 for shipping and 
  754. handling. A complete listing of the program, which is 
  755. written in Borland C/C++, is also available for an 
  756. additional $20.00. All prices are in U.S. dollars. 
  757.  
  758.    Checks should be made out to:
  759.  
  760.    Theron Wierenga, P.O. Box 595, Muskegon, MI 49443
  761.  
  762.                   Ombudsman Statement
  763.  
  764.     This program is produced by a member of the 
  765. Association of Shareware Professionals (ASP). The ASP 
  766. wants to make sure that the shareware principle works 
  767. for you. If you are unable to resolve a shareware-
  768. related problem with an ASP member by contacting the 
  769. member directly, ASP may be able to help. The ASP 
  770. Ombudsman can help you resolve a dispute or problem 
  771. with an ASP member, but does not provide technical 
  772. support for members' products. Please write to the ASP 
  773. Ombudsman at 545 Grover Road, Muskegon, MI 49442-9427 
  774. USA, FAX 616-788-2765 or send a CompuServe message via 
  775. CompuServe Mail to ASP Ombudsman 70007,3536. 
  776.  
  777.                      User Support
  778.  
  779.     Registered users will receive support, by letter 
  780. mail, e-mail or phone, for six months from the date of 
  781. registration on any problems they encounter. Customer
  782. support and order phone 847-854-0489. The author is
  783. available by e-mail on the internet at 
  784. twiereng@remc4.k12.mi.us. 
  785.  
  786.                    Registration Form
  787.  
  788.       Mandelbrot/Julia Set Generator, Version 5.6
  789.  
  790.   Name______________________________________________
  791.  
  792.   Address___________________________________________
  793.              
  794.   City_________________________State_____Zip________
  795.  
  796.   Email address (if available)______________________
  797.  
  798.   Disk size:   5 1/4 in._______     3 1/2 in._______
  799.  
  800.   Registration fee . . . . . . . . $25.00 __________
  801.   Registration fee (Outside USA) .  35.00 __________
  802.   Borland C/C++ program code . . .  20.00 __________
  803.   Shipping . . . . . . . . . . . .        ___2.00___
  804.  
  805.   Total enclosed . . . . . . . . .        __________
  806.            (All prices are in U.S. dollars.)
  807.  
  808.                   Method of payment: 
  809.   Check or MO_______ MasterCard________ Visa________
  810.  
  811.   Account number__________________ Expir. date______
  812.  
  813.   Signature (necessary)_____________________________
  814.  
  815.   How did you receive your copy of this program?
  816.  
  817.   __________________________________________________
  818.  
  819.   Suggested improvements____________________________
  820.  
  821.   __________________________________________________
  822.  
  823.   __________________________________________________
  824.  
  825.   __________________________________________________
  826.  
  827.     The Mandelbrot/Julia Set Generator, Version 5.6
  828.  
  829.                is a software product of
  830.  
  831.    Theron Wierenga, P.O. Box 595, Muskegon, MI 49443
  832.  
  833.       Customer support and order phone 847-854-0489
  834.                 twiereng@remc4.k12.mi.us
  835.  
  836.